#pragma once
#ifndef CLEVEL_H_
#define CLEVEL_H_

#include "LinkedList.h"
#include "CEntity.h"
#include "CConstraint.h"

class CLevel{
private:
	CSprite* m_pBackground;
	//Entity Management Varibles
	CEntityList *m_pEntList;
	LinkedList<CConstraint> *m_pCList;
	Node<CEntity>* m_pEntityIt;
	Node<CConstraint>* m_pConstraintIt;
	CEntity* m_pEntity;
	CConstraint* m_pConstraint;

	bool m_bLoaded;
public:
	CLevel();
	~CLevel();

	bool WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );

	bool GetLoaded(){return m_bLoaded;}

	void LoadLevel(LPCSTR filename);
	void DumpLevel();
	void Step(BYTE _keys[256], DIMOUSESTATE _mouse);
	void Draw();
	void CleanUp();
};


#endif